#ifndef _COLLISIONS
#define _COLLISIONS

#include "balle.h"
#include "filet.h"
#include "blob.h"
#include "vec2D.h"

class Collisions
{
    public:

        /** @brief Constructeur de la classe collisions. */
        Collisions(Balle &balle, Filet &filet, Blob &blob1, Blob &blob2, const int largeurT, const int hauteurT);

        /** @brief Destructeur par défaut de la classe collisions. */
        ~Collisions();

        /** @brief Vérifie si la balle est entrée en collision avec quelque chose. */
        bool isCollisionBalle(const vec2D &posBlob1, const vec2D &posBlob2, const vec2D &posBalle,  const vec2D &posBalleSuivante, vec2D &normale, bool &solTouche, int &marqueur);

        /** @brief Calcule le produit scalaire entre 2 points. */
        float dot(const vec2D &p1, const vec2D &p2);

        /** @brief Calcule la distance entre 2 points. */
        float distPoint(const vec2D &p1, const vec2D &p2);

        /** @brief Calcule la distance entre 1 point et un segment. */
        float distSegment(const vec2D &p, const vec2D &s1,const vec2D &s2);

        /** @brief Calcule la norme d'un vecteur. */
        float norme(const vec2D &p);

    private:

        float lb1; /** < Largeur du blob1. */
        float lb2; /** < Largeur du blob2. */

        float hb1; /** < Hauteur du blob1. */
        float hb2; /** < Hauteur du blob2. */

        float rb;             /** < Rayon du ballon. */
        float posFilet;       /** < Position du filet sur l'axe des x. */

        int hauteurTerrain;   /** < Hauteur du terrain. */
        int largeurTerrain;   /** < Largeur du terrain. */

        Filet filet;          /** < Filet sisi. */
        Balle balle;          /** < Balle. */
};


#endif
